package org.example.flea_market_mvc.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.flea_market_mvc.entity.ShoppingCarts;
import java.util.List;

/**
 * 购物车 Mapper 接口
 * 基于 MyBatis-Plus 的 BaseMapper 扩展，适配真实业务场景
 */
@Mapper
public interface ShoppingCartsMapper extends BaseMapper<ShoppingCarts> {

    // 1. 基础 CRUD（继承 BaseMapper 后可直接使用增删改查，以下为业务增强方法）

    // 2. 按用户 ID 查询购物车（支持分页，示例）
    List<ShoppingCarts> selectByUserId(
            @Param("userId") Integer userId
    );

    // 3. 按用户 ID + 商品 ID 查询（判断购物车中是否已有该商品）
    ShoppingCarts selectByUserIdAndProductId(
            @Param("userId") Integer userId,
            @Param("productId") Integer productId
    );

    // 4. 游客购物车查询（按 sessionId）
    List<ShoppingCarts> selectBySessionId(@Param("sessionId") String sessionId);

    // 5. 批量删除（逻辑删除示例，更新状态字段）
    int updateStatusBatch(
            @Param("cartIds") List<Integer> cartIds,
            @Param("status") Integer status
    );

    // 6. 清空用户购物车（物理删除示例）
    int deleteByUserId(@Param("userId") Integer userId);

    int updateCartQuantity( Integer id, Integer data);
}